package br.ufrj.neg.preparacao.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Hashtable;

import br.ufrj.neg.bean.NegociacaoElementoBean;
import br.ufrj.neg.util.Data;

public class NegociacaoBean implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 8959498568981750800L;

	private int idNegociacao;
	private int idModeloNegociacao;

	private String negociacao;

	private String cliente;

	private String negociador;

	private Data dataCadastro;

	private Data dataAtualizacao;

	private double variacao;

	private int tipoNegociacao;
	
	private int idUsuario;
	
	private int idUsuarioContraparte;
	
	private int passo;
	
	private Hashtable<Integer,NegociacaoElementoBean> elementos;

	/**
	 * Retorna um int com o id da Negociacao
	 * 
	 * @return int
	 */
	public int getIdNegociacao() {
		return idNegociacao;
	}

	/**
	 * Método para setar o id da Negociacao
	 * 
	 * @param int
	 *            idNegociacao
	 */
	public void setIdNegociacao(int idNegociacao) {
		this.idNegociacao = idNegociacao;
	}
	
	

	public int getIdModeloNegociacao() {
		return idModeloNegociacao;
	}

	public void setIdModeloNegociacao(int idModeloNegociacao) {
		this.idModeloNegociacao = idModeloNegociacao;
	}

	/**
	 * Retorna uma String com a descrição da Negociacao
	 * 
	 * @return String
	 */
	public String getNegociacao() {
		return negociacao;
	}

	/**
	 * Método para setar a descrição da Negociacao
	 * 
	 * @param String
	 *            negociacao
	 */
	public void setNegociacao(String negociacao) {
		this.negociacao = negociacao;
	}

	/**
	 * Retorna uma String com o nome do Cliente da Negociacao
	 * 
	 * @return String
	 */
	public String getCliente() {
		return cliente;
	}

	/**
	 * Método para setar o nome do Cliente da Negociacao
	 * 
	 * @param String
	 *            cliente
	 */
	public void setCliente(String cliente) {
		this.cliente = cliente;
	}

	/**
	 * Retorna uma String com o nome do Negociador
	 * 
	 * @return String
	 */
	public String getNegociador() {
		return negociador;
	}

	/**
	 * Método para setar o nome do Negociador
	 * 
	 * @param String
	 *            negociador
	 */
	public void setNegociador(String negociador) {
		this.negociador = negociador;
	}

	/**
	 * Retorna um Data com a data de cadastro do Negocio
	 * 
	 * @return Data
	 */
	public Data getDataCadastro() {
		if (dataCadastro == null) return new Data();
		return dataCadastro;
	}

	/**
	 * Método para setar a data de cadastro do Negocio
	 * 
	 * @param Data
	 *            dataCadastro
	 */
	public void setDataCadastro(Data dataCadastro) {
		this.dataCadastro = dataCadastro;
	}

	/**
	 * Retorna um Data com a data de atualizacao do Negocio
	 * 
	 * @return Data
	 */
	public Data getDataAtualizacao() {
		if (dataAtualizacao == null) return new Data();
		return dataAtualizacao;
	}

	/**
	 * Método para setar a data de atualizacao do Negocio
	 * 
	 * @param Data
	 *            dataAtualizacao
	 */
	public void setDataAtualizacao(Data dataAtualizacao) {
		this.dataAtualizacao = dataAtualizacao;
	}

	/**
	 * Retorna a variacao do Negócio
	 * 
	 * @return double
	 */
	public double getVariacao() {
		return variacao;
	}

	/**
	 * Método para setar a variacao do Negócio
	 * 
	 * @param double
	 *            variacao
	 */
	public void setVariacao(double variacao) {
		this.variacao = variacao;
	}

	/**
	 * Retorna o tipo de Negociacao
	 * 
	 * 1 -> Compra
	 * 
	 * -1 -> Venda
	 * 
	 * @return int
	 */
	public int getTipoNegociacao() {
		return tipoNegociacao;
	}

	/**
	 * Método para setar o tipo da Negociacao
	 * 
	 * 1 -> Compra
	 * 
	 * -1 -> Venda
	 * 
	 * @param int
	 *            tipoNegociacao
	 */
	public void setTipoNegociacao(int tipoNegociacao) {
		this.tipoNegociacao = tipoNegociacao;
	}

	/**
	 * Retorna uma Hashtable dos Elementos do Negócio
	 * @return
	 */
	public Hashtable<Integer,NegociacaoElementoBean> getElementos() {
		
		return elementos;
	}

	/**
	 * Método para setar os Elementos do Negócio
	 * @param elementos
	 */
	public void setElementos(Hashtable<Integer,NegociacaoElementoBean> elementos) {
		this.elementos = elementos;
	}
	
	/**
	 * Retorna um NegociacaoElementoBean
	 * @param Integer ElementoId
	 */
	public NegociacaoElementoBean getElemento(Integer idElemento){
		if (elementos.get(idElemento)==null)
			return new NegociacaoElementoBean();
		else
			return elementos.get(idElemento);
		
	}

	public int getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public int getIdUsuarioContraparte() {
		return idUsuarioContraparte;
	}

	public void setIdUsuarioContraparte(int idUsuarioContraparte) {
		this.idUsuarioContraparte = idUsuarioContraparte;
	}

	public int getPasso() {
		return passo;
	}

	public void setPasso(int passo) {
		this.passo = passo;
	}
}
